UniLearn 教务系统需要一份虚构的 2026 学年课程表现报告。请汇总 在读选课记录,包括尚未有成绩的学生。
准备 PostgreSQL 数据
- 在 pgAdmin 查询工具中打开练习数据库。开启 自动提交 。
- 选择 打开文件 ,然后选择单独提供的
lab5_setup.sql。 - 执行整个文件。它会选择
lab5模式。在同一个查询工具中,复制 代码 选项卡中的检查查询,确认返回 36 行。
一行代表什么?
一行代表 一名学生在一门课程中的选课记录。S101 选修了三门课程,因此 S101 会出现三次。选课记录数与学生人数可能不同。
构建教务报告
- 统计选课记录数、已记录成绩数和不同学生数。
- 计算每门课程的总分和平均分。
- 保留符合所要求汇总条件的课程。
💡 汇总前必读
NULL 表示没有记录成绩; 0 是一份已记录的成绩。退选记录仍保留在表中,但不纳入报告。预览:36 条选课记录中的前 12 条
完整的 enrolments 表包含六门课程中的 20 名不同学生。六条退选记录将从报告中过滤掉。运行检查查询以查看全部 36 行。
| 选课ID | 学生 | 专业 | 课程 | 状态 | 成绩 | 学时 |
|---|---|---|---|---|---|---|
| E01 | S101 | DSAI | SQL101 | 在读 | 80 | 6 |
| E02 | S102 | CS | SQL101 | 在读 | 60 | 4 |
| E03 | S103 | DSAI | SQL101 | 在读 | NULL | 5 |
| E04 | S104 | IT | SQL101 | 退选 | 90 | 2 |
| E05 | S101 | DSAI | PY101 | 在读 | 90 | 8 |
| E06 | S105 | CS | PY101 | 在读 | 50 | 6 |
| E07 | S106 | DSAI | PY101 | 在读 | 70 | 7 |
| E08 | S107 | IT | PY101 | 在读 | NULL | 3 |
| E09 | S102 | CS | VIS101 | 在读 | 40 | 4 |
| E10 | S108 | DSAI | VIS101 | 在读 | NULL | 2 |
| E11 | S109 | IT | VIS101 | 退选 | 100 | 1 |
| E12 | S110 | IT | VIS101 | 在读 | 0 | 1 |
解读各列
enrolment_id标识一条选课记录;student_id可能重复。score是百分制成绩,未记录时为 NULL。study_hours记录这条选课记录的学习时长。
💡 PostgreSQL 语法
文本值使用单引号。数字和 SQL
NULL 则不用。每条语句以分号结尾。SET search_path TO lab5;
SELECT *
FROM enrolments
ORDER BY enrolment_id;新建了查询工具或重新连接?
安装脚本会为其当前连接选择模式。在新连接中运行一次以下语句,之后即可正常使用课程查询。
SET search_path TO lab5;